package com.unlcn.ils.crsc.service.sysadmin;


import com.baomidou.mybatisplus.plugins.Page;
import com.unlcn.ils.crsc.dao.model.sysadmin.Permission;
import com.unlcn.ils.crsc.dao.model.sysadmin.Role;

import java.util.List;

/**
 * 角色
 *
 * Created by Felix on 11/01/2017.
 */
public interface RoleService  {

    /**
     * 根据用户ID查询角色
     * 
     * @return
     * @throws Exception
     */
    List<Role> queryRolesByUid() throws Exception;

    /**
     *
     * @return
     * @throws Exception
     */
    Page<Role> queryRolePage(Page<Role> page) throws Exception;

    /**
     * 删除角色 同时删除角色权限表中的数据
     * @param roleIds 角色ID数组
     */
    int delRole(List<Integer> roleIds) throws Exception;

    /**
     * 添加角色
     * @param role 角色
     * @return
     * @throws Exception
     */
    Role addRole(Role role) throws Exception;

    /**
     * 修改角色
     * @param role 角色
     * @return
     * @throws Exception
     */
    int updateRole(Role role) throws Exception;

    /**
     * 根据ID得到角色
     * @param id 角色ID
     * @return
     * @throws Exception
     */
    Role getRoleById(Integer id) throws Exception;

    /**
     * 分配权限
     * @param roleId 角色ID
     * @param permissionIds 所指派的权限
     * @throws Exception
     */
    Integer assignPermission(Integer roleId, List<Integer> permissionIds) throws Exception;

    /**
     * 查询所有的角色
     * @return
     * @throws Exception
     */
    List<Role> listAll() throws Exception;

    /**
     * 得到角色所拥有
     * @param roleId
     * @return
     */
    List<Permission> listOwnPermission(Integer roleId);
}
